TRIM у дысках SMR ды SSD

Узроўні адрасацыі ў носьбітах дадзеных



Зь гледзішча карыстальніка, дадзеныя захоўваюцца ў файлах разьмешчаных у лёгічнай структуры каталёгаў. Сваім парадкам, дрэвы каталёгаў разьмяшчаюцца на падзелах - лёгічных частках дыскаў або іх набораў - масываў RAID (англ. Redundant Array of Independent Discs - Празьмерны Масыв на Незалежных Дысках). Захаваньнем файлаў ва ўпарадкаванай структуры кіруюць файлавыя сыстэмы, якія істотна адрозьніваюцца паміж сабою ў дэталях.
Акрамя гэтых адрозьненьняў, мы можам заўважыць пэўныя падабенства ва ўсіх файлавых сыстэмах. Файлавыя сыстэмы разьмешчаюць файлы ў пэўных адзінках разьмеркаваньня, якія называюцца клястарамі (ў файлавых сыстэмах зьвязаных з фірмай Microsoft) або блёкамі (звычайна ў асяродзьдзях вытворных ад Unixу), ў залежнасьці ад наменклятуры канкрэтнай файлавай сыстэмы. Паколькі паняцьце блёку вельмі неадназначнае, каб пазьбегнуць блытаніны, пазьней для абазначэньня гэтых адзынак разьмеркаваньня мы выкарыстоўвацімем тэрмін "клястар".
Клястары зьмяшчаюць меншую або большую (але заўседы роўную ступені двойкі) колькасьць сэктараў LBA (англ. Logical Block Addressing - адрасаваньне ў лёгічных блёках). Адрасаваньне LBA было вынайдзена ў першай палове 1980-х гадоў каб спрасьціць кіраваньне цьвёрдым дыскам, замяніць адрасаваньне CHS (англ. Cylindr - Head - Sector - цыліндар - галоўка - сэктар), якое адносілась беспасярэдне да фізычных сэктараў ды забясьпечыць сумяшчальнасьць паміж прыладамі розных вытворцаў. Гэты спосаб адрасаваньня быў прыняты праз стандарты ATA ды SCSI, а таксама выкарыстоўваецца іншымі пратаколамі сувязі, якія ўжываюцца для абмену інфармацыі.
Калі патрэбна прачытаць або запісаць дадзеныя на носьбіт, клястарная адрасацыя файлавай сыстэмы пералічваецца ў адрасоўку LBA і адпаведныя каманды паказваюць на адпаведныя сэктары ў гэтай адрасацыі. Але цьвёрдыя дыскі як і па-ранейшаму складаюцца зь меншай ці большай колькасьці кружэлак з круглымі, канцэнтрычнымі дарожкамі падзеленымі на фізычныя сэктары. Такім парадкам мусова адпаведнім спосабам прызначыць нумары адрасоў LBA ўласьцівым фізычным сэктарам. Гэтым заданьнем займаецца частка прашыўкі (ўбудаванага праґрамнага забесьпячэньня) - падсыстэма трансляцыі лёгічных адрасоў у фізычныя, коратка званая транслятарам.
Падобная сытуацыя й у выпадку паўправадніковых назапашвальнікаў, якія захоўвуюць дадзеныя ў мікрасхэмах Flash-NAND. Мы таксама зьвяртаемся да іх з дапамогай адрасаваньня LBA, хоць гэты тып носьбітаў ня мае кружэлак, дарожак ды сэктараў. Прылады, якія выкарыстоўваюць памяці Flash-NAND, адрасуюць дадзеныя ў старонках (гэта мінімальная адзінка праґрамаваньня і чытаньня) ды блёках (мінімальная адзінка сьціраньня). Сэктары эмулююцца кантролерам толькі дла захоўваньня сумяшчальнасьці з пратаколамі сувязі з вонкавым сьветам. І ў выпадку паўправадніковых назапашвальнікаў, за пералічваньне лёгічных адрасоў у фізычныя таксама адказвае адпаведная частка прашыўкі, якую часта называюць узроўнем (або слаём) трансляцыі флеш (англ. Flash Translation Layer - FTL).
Адрасаваньне LBA таксама выкарыстоўваецца ў масывах RAID. Калі мы спасылаемся на масыв RAID, мы маем на ўвазе ягоную адрасоўку LBA, якую затым кантролер масыву пералічвае ў адрасоўку асобных дыскаў, якія ўваходзяць у склад гэтага масыву. Калі мы маем справу з складаным асяродзьдзям, у якім узнікаюць масывы на масывах, адрасаваньне LBA масыву, да якога мы зьвяртаемся, спачатку пералічваецца ў адрасаваньне масываў, якія яго складаюць і толькі потым у адрасаваньне фізычных дыскаў.
Адрасаваньне LBA гэтаксама ўжываецца ў файлах віртуальных машын. У кожнага з такіх файлаў усталявана ўласная віртуальная файлавая сыстэма, незалежная ад файлавай сыстэмы, якая апісвае файл віртуальнай машыны. І ўнутры такога файла мы маем віртуальныя адрасы клястараў, пералічваныя ў віртуальныя адрасы LBA, якія паведамляюць нам, які фрагмэнт віртуальнай машыны мы хочам прачытаць або запісаць. І толькі з гэтай інфармацыяй гэтыя адрасы могуць быць пераўтвораны ў рэальныя адрасы рэальных клястараў файлавай сыстэмы, якая апісвае файл віртуальнай машыны ды рэалныя адрасы LBA фізычнага дыску.

Вольнае ды занятае месца



Калі мы купляем новы дыск, мы лічым, што ён пусты. Толькі калі мы яго ініцыялізуем, разьдзялім на падзелы, адфарматуем ды пачынаем зьмяшчаць на ёму нейкія дадзеныя, мы пачынаем заўважаць, што ён павольна запоўняецца. Мы таксама можам выкарыстоўваць інструмэнты аперацыйнай сыстэмы, каб праверыць, колькі ў нас вольнага ды занятага месца. Але мы можам казаць аб занятай ды вольнай прасторы толькі адносна лёгічных структур файлавай сыстэмы.
Ў фізычным сэнсе кожны носьбіт дадзеных заўседы захоўвае нейкую інфармацыю, нават, калі яна не паддаецца інтэрпрэтацыі на лёгічным узроўні. Спасылаючыся на адвольны сэктар LBA, мы заўседы атрымаем нейкі адказ, незалежна ад таго, хочам мы чытаць свабодны, ці заняты сэктар у сэнсе лёгічных структур. У выпадку новых дыскаў гэта будзе пасьлядоўнасьць байтаў з значэньнем 0х00, але калі дыск ужо быў ужываны, гэта ня так відавочна.
Часам нам можа здацца, што вольная прастора - гэта сэктары запоўненыя нулямі, а сэктары, якія зьмяшчаюць іншае зьмесьціва - занятыя. Ў рэчаіснасьці ўсё інакш. Занятая прастора, гэта вобласьці дыску апісаныя ў лёгічных структурах файлавай сыстэмы, нават, калі яны ўтрымліваюць сэктары запоўненыя нулямі. Калі гэтыя нулі апісваюцца як частка файлу або нейкай лёгічнай структуры ды інтэрпрэтуюцца нейкім спосабам, мы ня можам разглядаць іх як вольную прастору. Зь іншага боку, нават вобласьці, якія зьмашчаюць сувязныя ды поўныя файлы, калі яны ня будуць належным парадкам алрасаваны ў лёгічных структурах файлавай сыстэмы, зь іх пункту гледжаньня будуць вольнай прасторай, у якую можна разьмасьціць іншыя дадзеныя. Такія файлы без апісаў у мэтададзеных файлавай сыстэмы, ня бачныя ў структуры каталёгаў, але, пакуль яны ня перазапісаныя, іх можна аднавіць.

Падсыстэма трансляцыі лёгічных адрасоў у фізычныя



Клясычны транслятар у цьвёрдых дысках



На працягу дзесяцігодзьдзяў трансляцыя адрасоў LBA ў фізычную адрасацыю цьвёрдых дыскаў была адносна простай. Фізычныя сэктары атрымлівалі пасьлядоўныя нумары LBA, пачынаючы з нуля і заканчваючы апошнім нумарам, які вынікае з намінальнай ёмістасьці дыску. Адрасы LBA прысвойваліся пачынаючы з дарожак на вонкавым краі кружэлак дыску і растуць па кірунку да восі рухавіка. Гэта таму, што дарожкі з большым радыюсам даўжэйшыя, таму на іх можна разьмясьціць больш сэктараў, чым на карацейшых дарожках з меншым радыюсам.
Дзякуючы гэтаму разьвязаньню, пачатковыя сэктары LBA можна чытаць хутчэй, таму, што за адзін абарот кружэлкі іх можна прачытаць больш. Гэта можна лёгка заўважыць падчас тэставаньня цьвёрдага дыску, дзе дыяграма хуткасьці чытаньня падае па меры павялічэньня нумараў адрасаў LBA. Калі дыск выкарыстоўвае некалькі паверхняў кружэлак, бесьперапыннасьць нумарацыі сэктараў на дадзенай паверхні час ад часу перарываецца, каб разьмясьціць наступныя адрасы на іншых паверхнях. Прызначеньне канкрэтных адрасоў пэўным паверхням кружэлак называецца мапай галовак, таму, што такая мапа паказвае нам, якая галоўка чытае пэўныя дыяпазоны адрасоў LBA.
Адным з заданьняў транслятара ёсьць абыход пашкоджаных сэктараў. Зь гледзішча падсыстэмы трансляцыі, пашкоджаныя сэктары можна падзяліць на заводзкія ды выяўленыя падчас працы. Першыя зь іх запісваюцца ў асноўны спіс дэфэктаў (спіс P) і прапускаюцца пры прызначэньні нумароў адрасоў LBA. Апошнія выяўляюцца падчас працы дыску і запісваюцца ў нарастальны спіс дэфэктаў (спіс G) і, паколькі ім ужо былі прызначэньні нумары адрасоў LBA, гэтыя нумары перапрызначаюцца рэзэрвовым сэктарам у працэсе перапрызначэньня (пераразьмеркаваньня).
Падрабязнасьці падсыстэмы трансляцыі адрозніваюцца ў залежнасьці ад архітэктуры прашыўкі ды мадэляў дыскаў, але каб зразумець, як працуе функцыя TRIM нам не спатрэбяцца такія падрабязныя веды. Фактычна, найбольш значнай зьменай, якая адбылася паміж увядзеньнем адрасацыі LBA і вынаходніцтвам дахоўкавага запісу, была замена 512-байтных сэктараў на 4-кілёбайтні (Advanced Format). У выпадку апошняга адзін фізычны сэктар адпавядае 8 сэктарам LBA.

Дыскі SMR ды транслятар другога ўзроўню.



У пагоні за павелічэньнем шчыльнасьці запісу вытворцы цьвёрдых дыскаў заўважылі, што счытальная галоўка можа счытаць сыгнал значна вужчай дарожкі, чым здольная запісаць запісваючая галоўка. Вось, чаму яны распрацавалі мэтад дахоўкавага запісу (англ. Shingled Magnetic Recording - SMR), пры якім наступныя дарожкі часткова перазапісваюць папярэднія. Для гэтага патрэбавалася зьмяніць канструкцыю запісваючай галоўкі так, каб яна індукавала магнэсавае поле асымэтрычна, каб самы моцны сыгнал быў запісаны як мага бліжэй да папярэдняй дарожкі, не пашкоджаючы яе зьмесьціва.
Нэгатыўным наступствам увядзеньня дахоўкавага запісу стала страта свабоднага доступу да сэктара пры запісе. Калі мы запісваем у сэктар новае зьмесьціва, магнэсавае поле індукаванае галоўкай пашкоджвае зьмесьціва сэктараў разьмешчаных на далейшых дарожках. Каб не перазапісваць кожны раз усю паверхню кружэлкі, вытворцы групуюць дарожкі ў зоны SMR ёмістасьцю ў некалькі дзясяткаў МБ ды аддзяляюць гэтыя зоны бясьпечнымі прамежкамі. Аднак унясеньне зьмяненьняў у адзін сэктар усё роўна патрабуе перазапісу ўсей групы дарожак. Паколькі гэта вельмі нэгатыўна ўплывае на прадукцыйнасьць запісу, вытворцы вырашылі запісваць новае зьмесьціва сэктараў ня там, дзе яны фізычна разьмяшчалісь раней, а там, дзе гэта найзручней у дадзенай сытуацыі.
Дэталі разьвязаньня гэтай праблемы адрозьніваюцца ў розных вытворцаў, але ўсе яны маюць адну агульнаю рысу: яны парушаюць адносна пастаянную прывязку адрасоў LBA да пэўных фізычных адрасоў. У дысках з дахоўкавым запісам нумары адрасоў LBA могуць лёгка зьмяняць сваё фізычнае месцазнаходжаньне, а другі ўзроўвень транслятара адказвае за адсочваньне іх бягучага разьмяшчэньня. Такія дынамічныя зьмены ў становішчы лёгічных адрасоў у фізычных сэктарах патрабуюць увядзеньня ў прашыўку дыску адмысловых табліц для запісу гэтых зьмен. Практычна кожны запіс на дыск вымагае запісу новага фізычнага разьмяшчэньня пэўных адрасоў LBA. Гэта прыводзіць да павелічэньня рызыкі памылак у модулях транслятара другога ўзроўня, што ёсьць распаўсюджанай прычынай збояў дыскаў з дахоўкавым запісам ды страты доступу да дадзеных.

Слой трансляцыі флеш у паўправаднікавых носьбітах



Характэрнай асаблівасьцю паўправадніковых носьбітаў дадзеных ёсьць немагчымасьць беспасярэднага перазапісу існуючага зьмесьціва. Гэта зьвязана з фізычнымі асаблівасьцямі захаваньня дадзеных у назапашвальніках гэтага тыпу. Мікрасхэмы флеш дазваляюць разьмяшчаць электроны толькі ў пустых плаваючых засаўках транзыстараў, якія трэба сьцерці перад перапраґрамаваньнем. Такім парадкам, калі мы зьмяняем зьмесьціва сэктара LBA, ён запісваецца ў іншае фізычнае месца, а састарэлыя зьмесьціва павінна быць сьцёрта каб асвабадзіць адзінку фізычнага разьмеркаваньня для наступных запісаў.
Гэта разьвязаньне патрабуе, каб некаторыя фізычныя адзінкі разьмеркаваньня ў носьбіце заўседы былі гатовыя да запісу новых дадзеных. Такім спосабам адрасаваньне LBA ня можа ахапіць усю фізычную ёмістасьць назапашвальніка. Суадносіны колькасьці даступных адрасоў LBA ды фізычнай ёмістасьці носьбіта, гэта кампраміс паміж жаданьнем прадаваць прылады з максымальна магчымым памерам, а патрэбай падтрымліваць рэзэрв, які дазваляе ім працаваць эфэктыўна і бяз збояў.
Існаваньне ў паўправадніковых назапашвальніках, апроч апэрацыі запісу, апэрацыі фізычнага сьціраньня састарэлых дадзеных, робіць рэдагаваньне зьмесьціва сэктараў LBA больш складаным, чым у магнэсавых носьбітах, якія дазваляюць беспасярэдні перазапіс. Запіс новага зьмесьціва сэктара LBA прымушае запісаць яго новае фізычнае месцазнаходжэньня ў табліцы транслятара. Сваім парадкам, блёкі, якія зьмяшчаюць састарэлыя дадзеныя, выдаляюцца з адрасаваньня LBA ды плянуюцца да сьцерця. Гэты мэтад кіраваньня адрасаваньнем дадзеных азначае, што адрасы LBA ня прывязані да канкрэтных фізычных адзінак разьмеркаваньня, а круцяцца паміж імі спосабам, які вызначаецца выкананымі апэрацыямі.
Дадаткавая складанасьць у выпадку паўправадніковых носьбітаў вынікае з таго, што яны выкарыстоўваюць дзве розныя адзінкі фізычнага разьмеркаваньня: старонкі, якія ёсьць мінімальнымі адзінкамі чытаньня і праґрамаваньня ды блёкі - мінімальныя адзінкі сьціраньня. Памер старонак звычайна дазваляе захоўваць ад аднаго да 32 512-байтных сэктараў LBA (іх колькасьць у старонцы заўседы роўна ступеньню двух), а таксама празьмерную інфармацыю патрэбную для правільнай працы назапашвальніка. Сваім парадкам, блёкі захоўваюць ад некалькіх да некалькіх сотняў старонак. Да пэўнага моманту колькасьць старонак у блёку была роўна ступеньню двух, але вось ўжо некалькі гадоў вытворцы гэтага правіла не датрымуюць.
Гэта азначае, што на практыцы зьмены зьмесьціва назапашвальніка на ўзроўні сэктараў LBA прымушуюць адзінкі фізычнага разьмеркаваньня нейкі час утрымліваць як бягучыя, так і састарэлыя дадзеныя. Гэта становіцца праблематычным, калі колькасьць свабодных блёкаў, гатовых прымаць новыя дадзеныя, пачынае зьмяншацца. Яшчэ адна праблема, з якой сутыкаюцца паўправадніковыя носьбіты - гэта іх знос апэрацыямі сьціраньня ды запісу, якія ў канчатковым выніку прыводзяць да збою прылады. Й менавіта гэтыя праблемы прывялі да ўкараненьня функцыі TRIM.

Як TRIM працуе ў цьвёрдацельніках?



Асновай для функцыі TRIM ёсьць факт, што, прынамсі тэарэтычна, з гледзішча карыстальніка немусова фізычна захоўваць дадзеныя, якія не разьмешчаны ў лёгічных структурах файлавай сыстэмы. Падсыстэме трансляцыі дастаткова ведаць, якія сэктары ляжаць у вобласьцях занятых дадзенымі або лёгічнымі структурамі, якія іх апісваюць, а якія, гэта вольная прастора ў лёгічным сэнсе. Прычым у апошнім выпадку замест таго, каб фізычна счытываць запытаныя сэктары, кантролер можа неадкладна адправіць у адказ сэктары запоўненыя нулямі.
Праца функцыі TRIM збольшага падобная на разрэджаныя файлы (англ. sparse file), ў якіх вялікія фрагмэнты файлу запоўненыя нулямі не мусова фізычна запісваць у падзел. У некаторых файлавых сыстэмах дастаткова, каб мэтададзеныя ўтрымлівалі інфармацыю пра тое, колькі запоўненых нулямі клястараў ды куды менавіта ў файле яны павінні быць устаўлены пры яго чытаньні. Й калі прашыўка цьвёрдацельніка дазваляе залучыць да слая трансляцыі флеш падобную інфармацыю, транслятар ня будзе шукаць фізычнае разьмашчэньне патрэбных сэктараў, а паведаміць кантролеру, што гэта "пустыя сэктары".
Ўкараненьне выкарыстаньня функцыі TRIM у цьвёрдацельніках павялічыла іх прадукцыўнасьць. Адсутнасьць патрэбы фізычнага чытаньня сэктараў разьмешчаных у "свабоднай вобласьці" дыску азначае, што мы можам атрымаць адказ хутчэй. Мы таксама можам утрымліваць больш сьцёртых блёкаў, што ня толькі карысна ўплывае на прадукцыўнасьць запісу, але й зьніжае нагрузку на носьбіт апэрацыямі праґрамаваньня ды сьціраньня і палягчае працу альгарытмаў выраўноўваньня зносу. Гэта важна з-за ўстойлівасьці назапашвальнікаў, якая ў значнай ступені залежыць ад апэрацый праґрамаваньня ды сьціраньня.
Паколькі самі носьбіты дадзеных не інтэрпрэтуюць гэтых дадзеных, а толькі іх захоўваюць, для працы функцыі TRIM, акрамя яе падтрымкі прашыўкай дыску, таксама патрэбна крыніца інфармацыі аб тым, што адбываецца на ўзроўні лёгічных структрур файлавых сыстэм. Дыск павінен нейкім спосабам ведаць, якія сэктары "выкарыстоўваюцца", а якія не. Інфармацыю па гэтай тэме падае кантролеру апэрацыйная сыстэма, якая кіруе файлавымі сыстэмамі на падзелах дыску. Большасьць сучасных апэрацыйных сыстэм падтрымліваюць функцыю TRIM ды падтрымка гэтай функцыі ўключана па замаўчаньні. Аднак не ва ўсіх выпадках апэрацыйная сыстэма падтрымлівае функцыю TRIM для ўсіх падтрымоўваных файлавых сыстэм. Таксама бываюць сытуацыі, калі апэрацыйная сыстэма не супрацоўнічае з нейкімі дыскамі, хоць і сыстэма і сам дыск падтрымліваюць функцыю TRIM. Прыкладам могуць быць старыя сыстэмы MacOS, якія патрабавалі адмысловага праґрамнага забесьпячэньня для падтрымкі функцыі TRIM у цьвёрдацельніках ад іншых пастаўнікоў, акрамя Apple. Каб функція TRIM працавала, яна гэтаксама павінна быць падтрымліваная праз пратаколы сувязі, якія кампутары выкарыстоўваюць для сувязі з носьбітамі. Такім парадкам TRIM ня будзе працаваць на старым абсталяваньні, якое ня сумяшчалнае з ATA-8. Таксама могуць быць праблемы з кантролерамі RAID, якія ня заўседы падтрымліваюць TRIM. Гэтая функцыя ў роўнай меры не падтрымліваецца большасьцю перахаднікаў USB. Адпаведнікам функцыі TRIM у стандарце SCSI ёсьць UNMAP.

Расьсейваньне дадзеных у мікрасхемах Flash-NAND



Дадзеныя ў паўправадніковых носьбітах не запісваюцца пасьлядоўна, а раскіданы па розных адзінках фізычнага разьмеркаваньня. На гэта ўплываюць чыньнікі зьвязаныя з прадукцыйнасьцю ды даўгавечнасьцю носьбітаў. Памяць Flash-NAND даволі павольная, таму прадукцыйнасьць носьбітаў, якія выкарыстоўваюць гэтыя мікрасхэмы заснавана на роўналеглай апрацоўцы дадзеных у многіх мікрасхэмах, падобна, як у выпадку масываў RAID, якія апрацоўваюць дадзеныя роўналегла на многіх дысках.
Другая важная прычына расьсейваньня дадзеных, гэта джоўлева цяпло, якое вылучаецца падчас запісу ды сьціраньня дадзеных. Апэрацыі праґрамаваньня ды сьціраньня ў мікрасхэмах Flash-NAND выкарыстоўваюць квантава-мэханічну зьяву тунэляваньня Фаўлера-Нордхэйма, якая патрабуе павышэньня напружаньня ўнутрі мікрасхэмы ды зьвязаная з стратамі энэргіі. Калі б фізычны запіс у мікрасхэме Flash-NAND выконваўся пасьлядоўна, часта магло б адбыцца пашкоджаньне памяці з-за мясцавага перагрэву мікрасхэмы.
Каб засьцярэгчысь ад гэтай праблемы, памяці Flash-NAND, як правіла, ўнутрана лёгічна падзяленыя на дзве ці чатыры часткі, паміж якімі дадзеныя запісваюцца ў парадку чаргаваньня. Па вышейзгаданых прычынах дадзеныя запісаныя на паўправадніковы носьбіт раскіданы такім спосабам, што суседнія сэктары LBA звычайна фізычна аказваюцца ў розных старонках. Гэта можна лёгка заўважыць на носьбітах, дзе ёсьць памылкі чытаньня. Пры сканаваньні такога носьіта часта можна назіраць пасьладоўнасьці пашкоджаных сэктараў, якія перамяжоўвуюцца добрымі. Такія дрэнныя сэктары чытаюцца з пашкоджаных старонак, а правільныя паміж імі, разьмяшчаюцца на функцыянальных.

Зьбяраньне сьмецьця



Калі ў зьмесьціва цьвёрдацельніка ўносяцца зьмены на ўзроўні адрасаваньня LBA, зьменяныя сэктары запісваюцца на іншыя фізычныя старонкі, разьмяшчаныя ў іншых фізычных блёках. Паколькі блёкі ўтрымліваюць шмат старонак, цяпер іх звычайна сотні, лёгка сутыкнуцца з сытуацыяй, калі блёкі ўтрымлівацімуць зароўна некаторыя старонкі зь бягучым зьмесьцівам і некаторыя з састарэлым. Пакуль блёк зьмяшчае бягучыя старонкі, яго нельга сьцерці і падрыхтаваць да прыёму новых дадзеных.
Такая сытуацыя вельмі нязручная з гледзішча кіраваньня адрасаваньнем носьітаў, таму, што магчыма апынуцца з занадта большаю колькасьцю блёкаў, якія зьмашчаюць невялікую колькасьць старонак зь бягучым зьмесьцівам. Гэтых блёкаў немагчыма сьцерці, што можа прывесьці да значнага памяншэньня колькасьці сьцёртых блёкаў, гатовых да запісу новых двдзеных, што сваім парадкам ўскладнюе іх запіс нават, калі з лёгічнага пункту гледжаньня на носьбіце ёсьць дастаткова вольнага месца.
Для разьвязаньня гэтай праблемы прымянена працэдуру збору сьмецьця (англ. Garbage Collection). Натхнёны працэдурай збору сьмецьця ў апэратыўнай памяці, збор сьмецьця ў паўправадніковых носьбітах палягае на перамяшчэньні старонак зь бягучым зьмесьцівам зь блёкаў, якія зьмяшчаюць адносна мала такіх бягучых старонак, у іншыя блёкі. Гэта дазваляе сьціраць блёкі, якія ўжо больш ня ўтрымліваюць бягучых дадзеных.
Гэты працэс звычайна адбываецца ў фонавым рэжыме, калі кантролер носьбіта ня заняты апрацоўкай уваходных каманд. Функцыя TRIM дазваляе прапускаць з зборкі сьмецьця старонкі, якія зьмяшчаюць бягучыя дадзеныя, але выдаленыя на лёгічнаму ўзроўні. Гэта ня толькі паскарае працу носьбіта, але й зьніжае яго нагрузку апэрацыямі праґрамаваньня ды сьціраньня.

Чаму TRIM выкарыстоваецца ў дысках SMR?



У выпадку дыскаў з дахоўкавым запісам выкарыстаньне функцыі TRIM ёсьць сьледствам страты свабоднага доступу да сэктара пры запісе. Гэта прымусіла вытворцаў шукаць разьвязаньня для захаваньня прадукцыйнасьці запісу дыскаў SMR, што прывяло да ўскладненьня падсыстэмы трансляцыі лёгічных адрасоў у фізычні. Розныя вытворцы па-рознаму падыходзяць да праблемы адрасаваньня ды захоўваьнья дадзеных у дысках SMR.
Адным з прымяненых разьвязаньняў ёсьць выкарыстаньне буфэра з дарожкамі нармальнай шырыні - Media Cache. Дадзеныя, якія паступаюць на дыск, запісваюцца ў буфэр і толькі потым, калі дыск не заняты камандамі карыстальніка, перапісваюцца ў адпаведныя зоны SMR. Гэта дазваляе праводзіць працяглы працэс перазапісу цэлых зон SMR ды ачысткі Media Cache у фонавым рэжыме, нязаўважна для карыстальніка. Так ёсьць прынамсі ў большасьці выпадкаў, але адначасовае захаваньне вельмі вялікіх аб'ёмаў дадзеных праблематычна, асабліва калі гэтыя дадзеныя складаюцца з вельмі вялікай колькасьці маленькіх файлаў. У такіх сытуацыях буфэр Media Cache можа запоўніцца ды хуткасьць запісу можа рэзка ўпасьці.
Іншы падыход палягае ў запісе дадзеных беспасярэдна ў зоны SMR, якія часта іншыя ад зон, у якіх гэтыя сэктары LBA разьмяшчалісь перад запісам. Тут ёсьць нейкае падабенства з чаргаваньнем адрасоў LBA паміж адзінкамі фізычнага разьмяркаваньня, што адбываецца ў паўправадніковых назапашвальніках. Хаця ў выпадку магнэсавых носьбітаў, такіх, як цьвёрдыя дыскі, мы ня маем патрэбы ў апэрацыі сьціраньня, таму, што мы можам беспасярэдна перазапісваць існуючыя дадзеныя, пры запісе ў зону SMR, мы ня хацелі б пашкодзіць зьмесьціва тых сэктараў, якія не зьмяняюцца.
Такім парадкам, у выпадку абодвух указаных вышэй разьвязаньняў, выкарыстаньне функцыі TRIM ўплывае на прадукцыйнасьць дыску. Гэта адбываецца як падчас запісу, калі дыск ведае, якія вобласьці не адрасаваныя ў лёгічных структурах файлавых сыстэм і можа зэканоміць час патрэбны для іх запісу ў мэтавае месца, так і падчас чытаньня, калі яму ня трэба фізычна шукаць сэктары, якія зьмяшчаюць "пустое месца" і можа замест гэтага выстаўляць на вонкавым інтэрфэйсу дыску сэктары запоўненыя нулямі. Паколькі, ў адрозненьне ад цьвёрдацельных назапашвальнікаў, апэрацыі запісу ня зношуюць цьвёрдыя дыскі, TRIM ня ўплывае на іх устойлівасьць, як гэта адбываецца зь цьвёрдацельнікамі.

Практычныя наступствы функцыі TRIM



Аднаўленьне дадзеных ды кампутарная крыміналістыка



У выпадку назапашвальнікаў, якія выкарыстоўваюць функцыю TRIM, выдаленьня файлаў на лёгічнаму ўзроўні азначае, што іх немагчыма аднаўліць працуючы на ўзроўні адрасаваньня LBA. Гэта зьвязана з тым, што ў адказ на каманду чытаньня сэктараў, якія зьмяшчаюць выдаленыя файлы, дыск будзе вяртаць сэктары запоўненыя нулямі. Аднак на фізычным узроўні гэтыя дадзеныя ўсё яшчэ могуць існаваць. Пры тому іншая сытуацыя ў выпадку цьвёрдых дыскаў і цьвёрдацельнікаў.
Паколькі паўправадніковыя носьбіты фізычна сьціраюць дадзеныя, працэс фізычнага зьнішчэньня лёгічна выдаленых файлаў пачынаецца неадкладна. Важна адзначыць, што гэты працэс адбываецца на ўзроўні прашыўкі, таму, пакуль цьвёрдацельнік падлучаны да крыніцы сілкаваньня, працэс сьціраньня адбываецца незалежна ад іншых каманд атрыманых ад кампутара ды не магчыма яго спыніць з дапамогай блякіроўнікаў запісу, якія ўжываюцца ў кампутарнай крыміналістыцы. Працэс сьціраньня блёкаў можна спыніць адпаяўшы мікрасхэмы памяці ды прачытаўшы іх на праґраматоры або перавеўшы цьвёрдацельнік у сэрвісны рэжым (Safe Mode).
У выпадку распайкі мікрасхэм Flash-NAND аднаўленьне дадзеных можа сутыкнуцца з шэрагам практычных перашкод, самай сур'ёзнай зь якіх ёсьць шыфраваньне. Шыфраваньне шырока прымяняецца ў сучасных цьвёрдацельніках, ня толькі таму, што яно добра прадаецца як элемэнт бясьпекі дадзеных, але й таму, што альгарытмы шыфраваньня вельмі добра рандомізуюць дадзеныя, што дапамагае паменшыць колькасьць бітавых памылак. Там, дзе шыфраваньне ня выкарыстоўваецца, як правіла, прымяняецца рандомізацыя, часто дынамічная, якую вельмі складана матэматычна аналізаваць. Яшчэ адной цяжкай праблемай, якую можна сустрэч пры дэкадаваньні двайковых выяваў адпаяных мікрасхэм памяці, ёсьць унутранае сьцісканьне, мэта якога - паменшыць аб'ём фізычна захаваных дадзеных і, такім спосабам, колькасьць апэрацый запісу, якія зношуюць мікрасхэмы. Па гэтым прычынам далёка ня ў кожным выпадку адпайка мікрасхэм ёсьць разьвязаньнем, якое абяцае дзейснае аднаўленьне дадзеных.
Альтэрнатывай ёсьць перавод цьвёрдацельніка ў сэрвісны рэжым, у якому кантролер ня мае прамога доступу да памяці. Калі ў сервісным рэжыме можна атрымаць доступ да фізычнай адрасацыі, блякуючы фонавыя працэсы, можна аднавіць частку дадзеных, якія яшчэ ня былі фізычна сьцёртыя. Аднак, паколькі працэс фізычнага сьціраньня дадзеных пазначаных праз TRIM як выдаленыя на лёгічнаму ўзроўні можа адбыцца на працягу некалькіх - некалькіх дзясятак хвілін, шанцы аднавыць такім спосабам хоць што, даволі ілюзорныя.
Сытуацыя крыху лепш у выпадку цьвёрдых дыскаў, якія не падтрымліваюць сьціраньне дадзеных. На цьвёрдых дысках дадзеныя, якія лёгічна выдаляюцца, ў фізычнай адрасацыі застаюцца някранутымі, пакуль ня будуць перазапісаныя іншым зьмесьцівам. У іх выпадку час рэагаваньня ды сам факт падлучаньня да крыніцы сілкаваньня пры падтрымцы функцыі TRIM ня гэтак крытычныя для аднаўленьня дадзеных. Аднак трэба памятаць, што й цьвёрдыя дыскі з дахоўкавым запісам ня вольныя ад фонавых працэсаў, напрыклад ачысткі буфэра Media Cache. І перазапісваюцца ў іх не асобныя сэктары, а цэлыя зоны SMR.

Зьнішчэньне дадзеных.



У выпадку зьнішчэньня дадзеных, функцыя TRIM ускладняе праверку правільнасьці выкананьня заданьня. Гэта вынікае з таго, што на лёгічным ўзроўні мы можам атрымаць адказ аб дзейсным зьнішчэньні дадзеных у той час, як на ўзроўні фізычнай адрасацыі яны ўсё яшчэ існуюць ды могуць быць аднаўленьні. Толькі пазьней апэрацыі сьціраньня блёкаў, якія адбываюцца ў фонавым рэжыме, прыводзяць да фактычнага зьнішчэньня дадзеных.
Акрамя таго, як зь цьвёрдацельнікамі, так і з дыскамі з дахоўкавым запісам, існуе рызыка пакінуць някранутыя дадзеныя ў месцах па-за адрасацыяй LBA. Гэты рызыка большы ў выпадку зь цьвёрдымі дыскамі, таму, што ў выпадку паўправадніковых назапашвальнікаў блёкі, якія апыняюцца па-за межамі адрасаваньня LBA, павінны быць неадкладна фізычна сьцёртыя. Такім парадкам, даволі часта рэкамэндуецца для зьнішчэньня дадзеных ужываць працэдуру Secure Erase, якая працуе бліжэй да фізычнага адрасаваньня носьбіта, што павінна забяспечыць дзейснае зьнішчэньне дадзеных.
Аднак часам вынікаюць сумневы наконт правільнасьці рэалізацыі працэдуры Secure Erase у прашывцы носьбітаў. Вельмі цікавы прыклад няправільнага выкананьня працэдуры Secure Erase у мікрасхэмах eMMC прадэманстравала Ая Фукамі падчас канфэрэнцыі Flash Data Recovery & Digital Forensic Summit 2024. У прэзэнтацыі "Exploiting the eMMC security features using the VNR" яна паказала мікрасхэмы eMMC, зь якіх можна была аднавіць дадзеныя пасьля выкананьня працэдуры Secure Erase амаль стовадсоткава, хаця на лёгічнаму ўзроўні гэтыя носьбіты былі запоўненыя нулямі. Аднак пераход да ўзроўню фізычнай адрасацыі дазволіў зрабіць выснову, што зьмесьціва фізычных блёкаў была пашкоджана толькі нязначна і значную яго частку можна аднавіць.
Па гэтай прычыне пры нішчэньні дадзеных варта зьвярнуць увагу на час выкананьня апэрацыі Secure Erase. Калі яна адбываецца падазрона хутка, за час меншы чым час патрэбны для паўнога перазапісу назапашвальніка, вельмі імаверна, што дадзеныя ня былі фізычна зьнішчэньні, але толькі адбылася апэрацыя на падсыстэме трансляцыі лёгічных адрасоў у фізычныя. Ў выпадку шыфраваных носьбітаў таксама можа быць зьнішчаны ключ шыфраваньня (так званая крыптазачыстка - cryptoerase), што значна павышае бясьпеку апэрацыі. Аднак у такіх сытуацыях лепш да працэдуры Secure Erase мець абмежаваную ўпэўненасьць і зьнішчыць дадзеныя шляхам перазапісу ўсёго носьбіта.

Як вылучыць функцыю TRIM?



У сыстэме Windows



Запусьці камандны радок (cmd) ад імя адміністратара,
ўведзі каманду:

fsutil behavior set disabledeletenotify 1

У сыстэме Linux



З сыстэмамі Linux усё ня так проста. З-за адрозненьняў паміж асобнымі дыстрыбутывамі ды файлавымі сыстэмамі, якія выкорыстоўвуюцца ў асяродзьдзі Linux, падрабязную інфармацыю варта праверыць у дакумэнтацыі. Звычайна за падтрымку функцыі TRIM у сыстэме Linux адказвае парамэтар discard, які паведамляе дыску аб выдаленьні файлаў на лёгічнаму ўзроўні адразу пасьля выконаньня апэрацыі або каманда fstrim, яка перадае кантролеру інфармацыю аб лёгічна апушчаных вобласьцях пасьля яе падачы ўручную або аўтаматычна (напрыклад з дапамогай сыстэмнага мэнэджара systemd) праз зададзеныя прамежкі часу. Парамэтры мантаваньня падзелаў захоўваюцца ў файле канфігурацыі etc/fstab і там іх можна праверыць. Важна памятаць, што ў некаторых файлавых сыстэмах падтрымка функцыі TRIM можа быць улучана за замоўчаньням (каб яе прымусова вылучыць, выкарыстоўваецца парамэтар nodiscard) або шляхам усталяваньня сьцяга ў наладах суперблёку.

у сыстэме MacOS



Увядзі ў тэрмінале:

sudo trimforce disable

Увядзі пароль адміністратара ды пацьвердзі зьмены. Пасьля пацьвярджаньня, кампутар аўтаматычна перазапусьціцца.


Старонка ня зьбірае дадзеных карыстальнікаў